﻿#region GNU General Public License
/*
-----------------------------------------------------------------------------
This source file is part of jscc
    (Javascript with Classes)
For the latest info, see http://code.google.com/p/jscc

Copyright (c) 2011 Tapani Valkonen

jscc is free software: you can redistribute it and/or modify it under 
the terms of the GNU General Public License as published by the 
Free Software Foundation, either version 3 of the License, or (at your option)
any later version. 
 
jscc is distributed in the hope that it will be useful, 
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 
for more details.

You should have received a copy of the GNU General Public License 
along with jscc. If not, see http://www.gnu.org/licenses/.
-----------------------------------------------------------------------------
*/
#endregion

using System;
using System.Collections.Generic;
using System.Text;

namespace jscc
{
    public enum TokenType
    {
        Plus,
        Minus,
        Multiply,
        Divide,

        BraOpen,
        BraClose,
        ParOpen,
        ParClose,
        SbraOpen,
        SbraClose,

        Dot,
        Period,
        Colon,
        Semi,
        Assign,

        ExcMark,
        Greater,
        Less,

        String,
        Char,
        Integer,
        Float,
        Double,
        Identifier,
        Keyword,

        Eof,
        Uknown
    }

    public class Token
    {
        public Token(TokenType type, SourceLocation location)
        {
            Type = type;
            Keyword = KeywordType.None;
            Location = location;
        }

        public string Data
        {
            get
            {
                return Location.Data;
            }
        }

        public TokenType Type;
        public KeywordType Keyword;
        public SourceLocation Location;
    }
}
